0  CLEAR :TF = 500
1  DIM A%(TF + 1,20),B(TF + 1)
3  DIM ND%(12)
4  DATA           31,29,31,30,31,30,31,31,30,31,30,31: FOR M = 1 TO 12: READ ND%(M): NEXT M::A$ = "     CONTROLE BANCARIO-MICROIDEIA      "
6  GOTO 15000
17 CS = 0: HOME : VTAB  (22): PRINT "NUMERO MAXIMO DE LANCAMENTOS": GOSUB 500: GOSUB 9000: IF CH = 1 THEN  GOTO 17: IF R$ > 50 THEN 17
18  IF  VAL (R$) > TF THEN 17
19 A%(0,2) =  VAL (R$):A%(0,1) = A%(0,2) + 1
40  FOR I = 1 TO A%(0,1):A%(I,1) = 99:A%(I,2) = 99: NEXT I
45  VTAB  (23): PRINT "                      "
50  VTAB  (22): PRINT "ENTRE COM O SALDO INICIAL         :": GOSUB 500: GOSUB 9000: IF CH = 1 THEN 50
55 B(0) =  VAL (R$)
56  VTAB  (23): PRINT "                        "
60  HOME : VTAB  (22): PRINT "ENTRE COM A DATA BASE NO FORMATO DDMM:": GOSUB 500: GOSUB 9100: IF CH = 1 THEN 60
65 A%(0,3) = DI:A%(0,4) = ME
100  HOME : VTAB  (22): PRINT "QUAL O NOME DO BANCO ? (15 POSICOES)   ": GOSUB 500: IF  LEN (R$) > 15 THEN R$ =  LEFT$ (R$,15)
110 I = 0: GOSUB 16000: GOSUB 17000:T$ = C$
300  HOME : GOTO 1000
500 R$ = "": INPUT R$
505  IF R$ = "I" THEN  GOSUB 700: GOTO 500
550  RETURN 
700  REM 
705  REM 
710  REM 
725  REM 
740  REM 
1000  HOME : INVERSE : PRINT A$: NORMAL : PRINT 
1001  GOSUB 2900
1002  PRINT "!  BANCO        :";T$; TAB ( 39);"!"
1003  PRINT "!  SALDO INICIAL:$";B(0); TAB ( 39);"!"
1004  PRINT "!  DATA BASE    :";A%(0,3);"/";A%(0,4); TAB ( 39);"!"
1005  GOSUB 2900
1020  PRINT 
1025  PRINT "OPCOES: "
1030  PRINT "          1-LANCAMENTO"
1035  PRINT "          2-BUSCA"
1040  PRINT "          3-PLANILHA"
1041  PRINT "          4-EXTRATO"
1045  PRINT "          5-MUDAR PRIMEIRO SALDO"
1050  PRINT "          6-MANUTENCAO DO ARQUIVO"
1060  PRINT "          7-SALVAR ARQUIVO EM FITA"
1064  PRINT "          8-MUDAR NOME DO BANCO"
1090  VTAB  (22): PRINT "ENTRE COM A OPCAO DESEJADA": GOSUB 500: GOSUB 9000: IF CH = 1 THEN 1000
1093  IF R$ = "0" THEN 8500
1094  IF R$ = "8" THEN 100
1095  IF  VAL (R$) < 1 OR  VAL (R$) > 8 THEN 1000
1098  ON  VAL (R$) GOSUB 2000,3000,6000,7500,6900,4000,10000
1100  HOME : GOTO 1000
2000  HOME : VTAB  (22): PRINT "CONFIRMA INCLUSAO DE LANCAMENTO(S/N)?": GOSUB 500: IF R$ <  > "S" THEN  RETURN 
2003  IF R$ = "N" THEN 1000
2005  HOME :CS = 0
2010  FOR I = 1 TO (A%(0,1) - 1): IF A%(I,4) = 1 THEN 2020: GOTO 2050
2015 A%(I,4) = 1: GOTO 2051
2020  NEXT I: VTAB  (22): PRINT "O ARQUIVO ESTA CHEIO;APERTE RETURN": GOSUB 500: RETURN 
2050  HOME : VTAB  (22): RETURN 
2051  GOSUB 2500: GOSUB 2050
2052  GOSUB 2700: GOSUB 2050
2054  GOSUB 2800: GOSUB 2050
2055  GOSUB 2600: GOSUB 2050
2056  GOSUB 2100: GOSUB 2050
2060  GOTO 2000
2100  REM  EX
2105  HOME : GOSUB 17000: INVERSE : PRINT "        EXIBICAO DE LANCAMENTO         ": NORMAL 
2107  PRINT : PRINT  TAB ( 12);T$
2110  PRINT : PRINT : GOSUB 2900
2115  PRINT "!  1-DATA"; TAB ( 20);":"A%(I,2);"/";A%(I,1); TAB ( 39);"!"
2120  PRINT "!  2-VALOR"; TAB ( 20);":CR$ "B(I) TAB ( 39)"!": PRINT "!  3-MODO"; TAB ( 20);":";: IF A%(I,3) = 1 THEN  PRINT "A CREDITO" TAB ( 39)"!"
2122  IF A%(I,3) <  > 1 THEN  PRINT "A DEBITO" TAB ( 39)"!"
2125  PRINT "!  4-DESCRICAO"; TAB ( 20);":"C$ TAB ( 39)"!"
2130  GOSUB 2900
2150  INVERSE : VTAB  (22): PRINT "OPCAO:(1-4),'C'P/ CANCELAR OU 'F'P/ FIM": NORMAL 
2160  GOSUB 500
2166  IF R$ = "C" THEN  GOTO 2300
2167  IF R$ = "F" THEN  RETURN 
2168  GOSUB 9000: IF CH = 1 THEN 2100
2169  IF  VAL (R$) < 1 OR  VAL (R$) > 4 THEN 2100
2170  ON  VAL (R$) GOSUB 2500,2800,2600,2700
2171  GOTO 2100
2300  HOME : VTAB  (22): PRINT "CONFIRMA CANCELAMENTO (S/N) ?          ": GOSUB 500: IF R$ <  > "S" THEN 2100
2320  REM  EX
2321 C$ = "": GOSUB 16000
2325 A%(I,4) = 0:A%(I,3) = 0:B(I) = 0:CS = 0:A%(I,1) = 99:A%(I,2) = 99:C$ = "":A%(I,5) = 0: RETURN 
2400  RETURN 
2500  HOME : VTAB  (22): PRINT "ENTRE COM A DATA NO FORMATO DDMM :     ": GOSUB 500: GOSUB 9100: IF CH = 1 THEN 2500
2502 CS = 0
2503  IF ME * 100 + DI < A%(0,4) * 100 + A%(0,3) THEN 2500
2505 A%(I,1) = ME:A%(I,2) = DI
2510  RETURN 
2600  HOME : VTAB  (22): PRINT "ENTRE : C-A CREDITO OU D-A DEBITO      ": GOSUB 500: IF R$ = "C" THEN A%(I,3) = 1: RETURN 
2605  IF R$ = "D" THEN A%(I,3) = 0: RETURN 
2610  GOTO 2600
2700  HOME : VTAB  (21): PRINT "ENTRE COM A DESCRICAO DO LANCAMENTO    ": PRINT " (ATE 15 POSICOES) :": GOSUB 500: IF  LEN (R$) > 15 THEN 2700
2702  GOSUB 16000
2705  HOME : RETURN 
2800  HOME : VTAB  (22): PRINT "ENTRE COM O VALOR DO LANCAMENTO :      ": GOSUB 500: GOSUB 9000: IF CH = 1 THEN 2800
2805 B(I) =  VAL (R$): RETURN 
2900  PRINT "+-------------------------------------+": RETURN 
3000  HOME :CB = 1: VTAB  (3): PRINT " BUSCA POR : 1-DESCRICAO DO LANCAMENTO": PRINT : PRINT  TAB ( 14)"2-DATA DO LANCAMENTO"
3005  VTAB  (22): PRINT "ENTRE OPCAO:"
3010  GOSUB 500: IF R$ = "" THEN  RETURN 
3012  IF R$ = "1" THEN 3200
3015  IF R$ = "2" THEN 3300
3017  RETURN 
3200  HOME : PRINT "ENTRE COM A DESCRICAO DO ": PRINT "LANCAMENTO A SE FAZER A BUSCA:": GOSUB 500: IF R$ = "" THEN  RETURN 
3202  IF  LEN (R$) > 15 THEN  GOTO 3200
3205  IF R$ = "" THEN 3500
3215  FOR I = 1 TO A%(0,1): IF A%(I,4) <  > 1 THEN 3250
3216  GOSUB 17000
3220  IF R$ =  MID$ (C$,1, LEN (R$)) THEN 2100
3250  NEXT I: GOTO 3500
3300  HOME : VTAB  (21): PRINT "QUAL A DATA A PARTIR DA QUAL SERA      ": PRINT "MOSTRADO O ARQUIVO?": GOSUB 500: IF R$ = "" THEN  RETURN 
3302  GOSUB 9100: IF CH = 1 THEN 3300
3305 DP = DI:MP = ME
3310 XP = 100 * MP + DP
3312  IF XP < A%(0,4) * 100 + A%(0,3) THEN 3300
3315  GOSUB 5000
3320  FOR K = 1 TO (A%(0,1) - 1): IF A%(K,4) <  > 1 THEN 3355
3325 D1 = 100 * A%(K,1) + A%(K,2): IF D1 >  = XP THEN 7000
3330  NEXT K
3355  HOME : PRINT "DATA SEM LANCAMENTOS; APERTE RETURN": GOSUB 500: RETURN 
3500  PRINT "ITEM NAO ENCONTRADO; APERTE RETURN": GOSUB 500: RETURN 
4000  HOME : PRINT "CONFIRMA MANUTENCAO DO ARQUIVO (S/N) ?": GOSUB 500: IF R$ <  > "S" THEN  RETURN 
4020  HOME : PRINT "ANTIGA DATA BASE : ";A%(0,3);"/";A%(0,4)
4030  VTAB  (22): PRINT "ENTRE  A NOVA DATA BASE NO FORMATO DDMM": GOSUB 500: GOSUB 9100: IF CH = 1 THEN 4030
4035  HOME 
4040 DP% = DI:MP% = ME:XP% = 100 * MP% + DP%
4045 XP = XP%
4050  VTAB  (3): PRINT DP%"/"MP%:SS = B(0)
4060 D2% = 100 * A%(0,4) + A%(0,3): IF XP% <  = D2% THEN  PRINT "DATA INVALIDA; APERTE RETURN ": GOSUB 500: RETURN 
4070  GOSUB 5000
4100  FOR I = 1 TO (A%(0,1) - 1)
4105 D1 = 100 * A%(I,1) + A%(I,2): IF D1 >  = XP THEN 4200
4110  IF A%(I,3) = 1 THEN SS = SS + B(I): GOTO 4115
4112 SS = SS - B(I)
4115  GOSUB 2320: NEXT I
4200 B(0) = SS:A%(0,4) = MP%:A%(0,3) = DP%: GOSUB 5000
4205  HOME : PRINT "OK. TUDO TERMINADO. NOVO SALDO INICIAL:": PRINT "CR$";B(0): VTAB  (22): PRINT "APERTE RETURN PARA VOLTAR AO MENU": GOSUB 500: RETURN 
5000  IF CS = 1 THEN  RETURN 
5010 CS = 1: HOME : PRINT "AGUARDE UNS INSTANTES ..."
5300 FF = A%(0,1)
5305 CH = 0
5307 FF = FF - 1
5310  FOR I = 1 TO FF
5320 D1 = 100 * A%(I,1) + A%(I,2):D2 = 100 * A%((I + 1),1) + A%((I + 1),2): IF D2 < D1 THEN  GOSUB 5600
5330  NEXT I
5335  IF CH = 0 THEN  RETURN 
5340  IF FF = 1 THEN  RETURN 
5345  GOTO 5305
5600  FOR T = 1 TO 20
5605 AX = A%(I,T):A%(I,T) = A%(I + 1,T):A%(I + 1,T) = AX: NEXT T
5620 AX = B(I):B(I) = B(I + 1):B(I + 1) = AX:CH = 1: RETURN 
6000  HOME :SS = B(0):TE = 0:TS = 0:J = 1
6040  HOME : VTAB  (22): PRINT "QUAL A DATA A PARTIR DA QUAL QUER A    ": PRINT "PLANILHA?": GOSUB 500: IF R$ = "" THEN  RETURN 
6042  GOSUB 9100: IF CH = 1 THEN 6040
6045 DP = DI:MP = ME:XP = 100 * ME + DI
6046  IF XP < A%(0,4) * 100 + A%(0,3) THEN 6040
6047  GOSUB 5000
6050  PRINT DP;"/";MP
6055 SS = B(0)
6080  FOR J = 1 TO (A%(0,1) - 1)
6090  IF A%(J,4) <  > 1 THEN 3355
6095 D1 = 100 * A%(J,1) + A%(J,2): IF D1 >  = XP THEN 6250
6096  IF A%(J,3) = 1 THEN SS = SS + B(J): NEXT J
6097 SS = SS - B(J): NEXT J
6100  GOTO 3355
6250  REM  EX
6251  HOME : PRINT  TAB ( 12);T$: PRINT "SALDO INICIAL = CR$";SS: PRINT "DATA"; TAB ( 10)"ENTRADA" TAB ( 20)"SAIDA" TAB ( 30)"SALDO": PRINT :TE = 0:NT = 0:TS = 0
6275  FOR I = J TO (A%(0,1) - 1): IF A%(I,4) <  > 1 THEN 6400
6280 D1 = 100 * A%(I,1) + A%(I,2):D2 = 100 * A%((I + 1),1) + A%((I + 1),2)
6290  IF D1 = D2 THEN  IF A%(I,3) = 1 THEN TE = TE + B(I): NEXT I
6293  IF D1 = D2 THEN  IF A%(I,3) <  > 1 THEN TS = TS + B(I): NEXT I
6300  IF A%(I,3) = 1 THEN TE = TE + B(I): GOTO 6305
6302 TS = TS + B(I)
6305 NT = NT + 1: IF NT > 15 THEN  GOSUB 6500
6310 SS = SS + TE - TS: PRINT A%(I,2)"/"A%(I,1) TAB ( 9)"$"TE TAB ( 19)"$"TS TAB ( 29)"$"SS:TE = 0:TS = 0
6320  NEXT I
6400  VTAB  (22): PRINT "SALDO FINAL = CR$ ";SS;" ": PRINT "APERTE RETURN PARA VOLTAR": GOSUB 500: NORMAL : RETURN 
6500 NT = 0: VTAB  (22): PRINT "SALDO  = CR$"SS" APERTE RETURN": GOSUB 500: HOME : PRINT  TAB ( 12);T$: PRINT "SALDO ANTERIOR TRANSPORTADO = CR$"SS
6505  PRINT "DATA" TAB ( 10)"ENTRADA" TAB ( 20)"SAIDA" TAB ( 30)"SALDO": PRINT : RETURN 
6565  HOME : PRINT  TAB ( 12);T$: PRINT "SALDO INICIAL = CR$"SS: PRINT "DATA" TAB ( 10)"ENTRADA" TAB ( 20)"SAIDA" TAB ( 30)"SALDO": PRINT 
6900  HOME : PRINT "SALDO INICIAL = CR$"B(0): PRINT "ENTRE NOVO VALOR": GOSUB 500: IF R$ = "" THEN  RETURN 
6905  GOSUB 9000: IF CH = 1 THEN 6900
6910 B(0) =  VAL (R$): RETURN 
7000  HOME : PRINT  TAB ( 12);T$: PRINT "DATA  D/C DESCRICAO"; TAB ( 26);"VALOR": PRINT 
7010  FOR I = K TO (K + 14): IF I = A%(0,1) OR A%(I,4) <  > 1 THEN 7200
7022  PRINT A%(I,2)"/"A%(I,1); TAB ( 8);
7023  IF A%(I,3) = 1 THEN  PRINT "C";
7024  IF A%(I,3) = 0 THEN  PRINT "D";
7025  GOSUB 17000: PRINT " ";C$; TAB ( 26);"$";B(I)
7030  NEXT I
7035  VTAB  (22): HTAB (1): INVERSE : PRINT "V-VOLTAR A-AVANCAR F-FIM               ": NORMAL : GOSUB 500: IF R$ = "F" THEN  RETURN 
7040  IF R$ = "A" THEN K = K + 15
7045  IF R$ = "V" THEN K = K - 15
7047  IF R$ <  > "A" OR R$ <  > "V" OR R$ <  > "U" OR R$ <  > "F" THEN 7035
7050  IF K < 1 THEN K = 1: GOTO 7000
7052  IF K >  = NF THEN K = K - 10
7060  GOTO 7000
7200  VTAB  (22): INVERSE : PRINT "ULTIMA PAGINA. V-VOLTAR F-FIM          ": NORMAL : GOSUB 500: IF R$ = "F" THEN  RETURN 
7201  IF R$ = "V" THEN 7040
7205  GOTO 7200
7500  HOME :SS = B(0):TE = 0:TS = 0:J = 1
7510  VTAB  (22): PRINT "CONFIRMA PEDIDO DE EXTRATO ? (S/N)     ": GOSUB 500: IF R$ <  > "S" THEN  RETURN 
7520  GOSUB 5000
7530  GOSUB 7800
7535 I = 1
7600  IF I = A%(0,1) THEN 7900
7601  IF A%(I,4) <  > 1 THEN I = I + 1: GOTO 7600
7603  GOSUB 17000
7604 K = K + 1: IF K > 15 THEN  GOSUB 7700
7605  IF A%(I,3) = 1 THEN SS = SS + B(I):CI$ = "C"
7606  IF A%(I,3) = 0 THEN SS = SS - B(I):CI$ = "D"
7610  PRINT A%(I,2)"/"A%(I,1); TAB ( 6);C$; TAB ( 21);CI$;B(I); TAB ( 31);SS
7620 I = I + 1: GOTO 7600
7700 K = 1: GOSUB 7850: GOSUB 7800: NORMAL : RETURN 
7800  HOME : PRINT  TAB ( 12);T$: INVERSE : PRINT "DATA  DESCRICAO       VALOR    SALDO   ": NORMAL : PRINT 
7810  RETURN 
7850  VTAB  (22): HTAB (1): INVERSE : PRINT "APERTE <RETURN> PARA CONTINUAR         ": GOSUB 500
7855  NORMAL 
7899  RETURN 
7900  VTAB  (22): HTAB (1): INVERSE : PRINT "                                       ": VTAB  (22): HTAB (1): INVERSE : PRINT "SALDO FINAL = ";: NORMAL : PRINT " ";SS;" ";: INVERSE : PRINT "APERTE RETURN": GOSUB 500
7910  NORMAL : RETURN 
8500  HOME : VTAB  (22): PRINT "CONFIRMA  INICIALIZACAO DO ARQUIVO?(S/N)": GOSUB 500: IF R$ <  > "S" THEN 1000
8502  GOTO 17
8505  FOR I = 1 TO A%(0,1)
8510 AI%(I,5) = 0:A%(I,4) = 0:A%(I,3) = 0:C$ = "":B(I) = 0:A%(I,1) = 0:A%(I,2) = 0
8515  NEXT I
8520  GOTO 15
9000 CH = 1:C1 = 0: IF  LEN (R$) < 1 THEN  RETURN 
9005  FOR L = 1 TO  LEN (R$): IF  MID$ (R$,L,1) <  > "." THEN 9020
9010  IF C1 = 1 THEN  RETURN 
9011 C1 = 1: GOTO 9030
9020  IF  MID$ (R$,L,1) < "0" OR  MID$ (R$,L,1) > "9" THEN  RETURN 
9030  NEXT L
9035 CH = 0: RETURN 
9100  GOSUB 9000: IF CH = 1 THEN  RETURN : LET CH = 1
9101 CH = 1
9105 DI =  VAL ( MID$ (R$,1,2)):ME =  VAL ( MID$ (R$,3,2))
9112  IF DI < 1 OR DI > 31 OR ME < 1 OR ME > 12 THEN  RETURN 
9115  IF DI > ND%(ME) THEN  RETURN 
9120 CH = 0: RETURN 
10000  HOME : PRINT "COLOQUE O GRAVADOR PARA GRAVAR E APERTE ENTER ": PRINT "OU ENTAO APERTE 'C' P/DESISTIR E VOLTAR AO MENU": GOSUB 500: IF R$ <  > "" THEN  RETURN 
10004  HOME : PRINT "GRAVANDO REGISTROS"
10014 A%(0,5) = CS:
10015  STORE A%: STORE B
10030  RETURN 
10100  HOME : PRINT "COLOQUE O GRAVADOR PARA REPRODUZIR E APERTE ENTER": PRINT "OU ENTAO APERTE 'C' E ENTER P/DESISTIR E VOLTAR AO MENU": GOSUB 500: IF R$ <  > "" THEN  RETURN 
10104  HOME : PRINT "LENDO REGISTROS"
10106  RECALL A%: RECALL B
10107 CS = A%(0,5):I = 0: GOSUB 17000:T$ = C$
10120  HOME 
10130  RETURN 
15000  HOME : INVERSE : PRINT A$: NORMAL : PRINT : PRINT "    ESTE PROGRAMA E DE INTEIRA ": PRINT "PROPRIEDADE DA MICROIDEIA SISTEMAS ,": PRINT "EDUCACAO E INFORMATICA LTDA."
15005  PRINT "    TODOS OS DIREITOS DE COMERCIALIZACAOESTAO RESERVADOS,ESTANDO OS INFRATORES": PRINT "SUJEITOS AS PENALIDADES PREVISTAS NO": PRINT "ARTIGO 182 DA LEI DE DIREITOS AUTORAIS."
15010  PRINT : INVERSE : PRINT "    COLOQUE A FITA COM O ARQUIVO NO    ": PRINT "GRAVADOR,PONHA-O PARA REPRODUZIR E     ": PRINT "APERTE RETURN.                         ":: PRINT "                                       "
15011  PRINT "    OU, SE AINDA NAO POSSUI ARQUIVO    ": PRINT "DIGITE 'PRIMEIRA' E APERTE RETURN.     "
15012  NORMAL 
15013  VTAB  22: HTAB (1): PRINT 
15015  GOSUB 500: IF R$ = "" THEN  GOSUB 10104: GOTO 1000
15020  IF R$ = "PRIMEIRA" THEN  GOTO 17
15030  GOTO 15000
16000  REM  EX
16001  FOR J = 6 TO 20:A%(I,J) = 0: NEXT J
16002  FOR J = 6 TO 20
16005  IF  MID$ (R$,J - 5,1) = "" THEN 16020
16010 A%(I,J) =  ASC ( MID$ (R$,J - 5,1)):Z = J
16020  NEXT J
16030  RETURN 
17000 C$ = "": FOR Y = 6 TO 20
17010 C$ = C$ +  CHR$ (A%(I,Y))
17020  NEXT Y
17030  RETURN 
